package com.crape.topic.dao;

import java.util.List;

import com.crape.common.exceptions.DAOException;
import com.crape.common.model.Subject;

public interface ISubjectDAO {

	List<Subject> listSubjects(Subject subject) throws DAOException;

	List<Subject> getSubjects(Subject subject) throws DAOException;

	List<Subject> getAllSubjects(Integer startIndex, Integer pageSize) throws DAOException;

	Long countAllSubjects() throws DAOException;

	List<Subject> getHotSubjects() throws DAOException;

	void insertSubject(Subject subject) throws DAOException;

	void updateSubject(Subject subject) throws DAOException;

	Long updateSubjectAttentionCount(Long subjectid) throws DAOException;

	void deleteSubjectById(Long id) throws DAOException;

	Long countSubjectAttentionBySubjectid(Long accountid) throws DAOException;

	List<Subject> getTop8SubjectAttentions(Long accountid) throws DAOException;

	List<Subject> getSubjectAttentionsByAccountid(Long accountid, Integer startIndex, Integer pageSize) throws DAOException;

	Long countSubjectAttentionsByAccountid(Long accountid) throws DAOException;
}
